package com.loong.data.model;

import com.alibaba.fastjson.annotation.JSONField;
import com.loong.common.elasticsearch.json.GeoPointSerializer;
import lombok.*;
import org.elasticsearch.common.geo.GeoPoint;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.*;


import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Setter
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Document(indexName = "shop", type = "shop", replicas = 0)
public class ShopModel {
    @Id
    private Long id;
    /**
     * 店铺名字
     */
    @Field
    private String name;
    /**
     * 地理位置搜索
     */
    @GeoPointField
    @JSONField(serializeUsing = GeoPointSerializer.class)
    private GeoPoint location;

    /**
     * 企业id
     */
    @Field
    private Long companyId;

    /**
     * 地址
     */
    @Field(type = FieldType.Auto)
    private String address;

    /**
     * 经度
     */
    private String longitude;

    /**
     * 纬度
     */
    private String latitude;

    /**
     * 描述
     */
    private String description;

    /**
     * 语言
     */
    private String language;

    /**
     * 店铺类型
     */
    private Integer type;

    /**
     * 店铺分类
     */
    @Field
    private Long shopTypeId;

    /**
     * 店铺图标
     */
    private String logo;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 店铺负责人
     */
    private Long admin;

    /**
     * 配送距离
     */
    private Float deliveryDistance;

    /**
     * 开始营业时间
     */
    private Date startTime;

    /**
     * 结束营业时间
     */
    private Date endTime;

    /**
     * 是否24小时营业
     */
    private Boolean openAllDay;
    /**
     * 月销量
     */
    private Integer monthlySales;
    /**
     * 评分
     */
    private Float shopScore;

    /**
     * 多少元起送
     */
    private BigDecimal startingSend;

    /**
     * 配送方式
     */
    @Field(type = FieldType.Nested)
    private List<DeliveryWaysModel> deliveryWaysList;

    /**
     * 公告通知
     */
    private String notice;

    /**
     * 配送基础价格
     */
    @Field
    private BigDecimal basePrice;

}
